var commondStr = "";
$(function() {

	// 计算控制台的高度和宽度
	$width = $('.layui-body').width();
	$height = $('.layui-body').height();
	console.log($width + "---" + $height);

	// 创建websocket连接
	createWebTerm();
});
// --------------------------------------------------------------
// 创建Websocket连接
// --------------------------------------------------------------
function createWebTerm() {

	// 计算控制台的高度和宽度
	$width = $('.layui-body').width();
	$height = $('.layui-body').height();

	// 创建Term的控制台]
	var term = new Terminal({
		cols : Math.floor($width / 7.25),
		rows : Math.floor($height / 17.42),
		screenKeys : false,
		useStyle : true,
		cursorBlink : true,
		convertEol : true
	});
	
	// 打开指定的term
	term.open($("#content_term").empty()[0]);

	term.write('\x1b[31mWelcome to term.js!\x1b[m\r\n');

	// 回车
	term.write('\r\n');
	// term.on方法就是实时监控输入的字段，
	term.on('data', function(data) {
		// 打印到控制台上
		term.write(data);

		// 获取数据的二进制码
		var byteStr = strToBinary(data);
		// 根据二进制码，来获取是那个按钮
		switch (byteStr) {
		case "1101":
			console.log(commondStr);

			var response = exec(commondStr);
			term.write(response.result);
			term.write("\r\n");
			commondStr = "";

			// 获取这一行的数据
			break;
		case "11":
			// term.write("复制");
			console.log("复制：Ctrl+C");
			break;
		case "10110":
			// 获取剪贴板里面的内容
			// var content=window.clipboardData.getData("Text");
			// 写到服务器上
			console.log("剪贴板:Ctrl+V");
			break;
		case "1111111":
			// 移动前一格，然后删除
			term.write("\b");
			term.write(binaryToStr("1000 11011 1011011 1001011"));
			commondStr = commondStr.substr(0, commondStr.length - 1);
			break;
		default:
			commondStr += data;
			break;
		}
	});
}
//执行命令
function exec(commondStr){
	var response = null;
	var data = {cmd:commondStr};

	// shell命令执行的 url
	var url = $("#projectPath").val() + "/web/shell";
	$.ajax({
		type : "post",// 使用提交的方法 post、get
		url : url,// 提交的地址
		data : data,// 数据
		async : false, // 配置是否异步操作
		dataType : "json",// 返回数据类型的格式
	}).done(function(result) {
		response = result;
	});
	return response;
	
}
// console.log(binaryToStr("110001000010001 100111011101100")); //我们
// console.log(binaryToStr("1000000 100101 100100 101011")); //@%$+
// 将字符串转化为二进制的数据
function strToBinary(str) {
	var result = [];
	var list = str.split("");
	for (var i = 0; i < list.length; i++) {
		if (i != 0) {
			result.push(" ");
		}
		var item = list[i];
		// 将字符串转化为二进制数据
		var binaryStr = item.charCodeAt().toString(2);
		result.push(binaryStr);
	}
	return result.join("");
}

// 二进制转为字符串
function binaryToStr(str) {
	var result = [];
	//
	// 通过空格来分开二进制的字符
	var list = str.split(" ");
	for (var i = 0; i < list.length; i++) {
		var item = list[i];
		// 转为asciicode 码
		var asciiCode = parseInt(item, 2);
		// 转为文字
		var charValue = String.fromCharCode(asciiCode);
		// 添加到集合中
		result.push(charValue);
	}
	// 返回结果
	return result.join("");
}

// 绑定在了body上，也可以绑定在其他可用元素行，但是不是所有元素都支持copy和past事件。
$("#content_term").bind({
	copy : function(e) {// copy事件
		var cpTxt = "复制的数据";
		var clipboardData = window.clipboardData; // for IE
		if (!clipboardData) { // for chrome
			clipboardData = e.originalEvent.clipboardData;
		}
		// e.clipboardData.getData('text');//可以获取用户选中复制的数据
		clipboardData.setData('Text', cpTxt);
		alert(cpTxt);
		$('#message').text('Copy Data : ' + cpTxt);
		return false;// 否则设不生效
	},
	paste : function(e) {// paste事件
		console.log("xx");
		var eve = e.originalEvent
		var cp = eve.clipboardData;
		var data = null;
		var clipboardData = window.clipboardData; // IE
		if (!clipboardData) { // chrome
			clipboardData = e.originalEvent.clipboardData
		}
		data = clipboardData.getData('Text');
		/* $('#message').html(data); */
		console.log("粘贴数据");
		console.log(data);
	}
});
